/*********************************登录系统 类文件**************************************************/ using System.Text; using System.Security.Cryptography;//MD5加密需引入的命名空间 using System.Data.SqlClient;//数据库操作需引入的命名空间 /// /// DB 的摘要说明 /// public class DB { public DB() { // // TODO: 在此处添加构造函数逻辑 // } /// /// 连接数据库 /// /// 返回SqlConnection对象 public SqlConnection GetCon() { return new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"].ToString()); } /// /// 执行SQL语句 /// ///SQL语句 /// 返回值为int型:成功返1,失败返回0 public int sqlEx(string cmdstr) { SqlConnection con = GetCon();//连接数据库 con.Open();//打开连接 SqlCommand cmd = new SqlCommand(cmdstr, con); try { cmd.ExecuteNonQuery();//执行SQL 语句并返回受影响的行数 return 1;//成功返回1 } catch (Exception e) { return 0;//失败返回0 } finally { con.Dispose();//释放连接对象资源 } } /// /// 执行SQL查询语句 /// /// 查询语句 /// 返回DataTable数据表 public DataTable reDt(string cmdstr) { SqlConnection con =GetCon(); SqlDataAdapter da = new SqlDataAdapter(cmdstr, con); DataSet ds = new DataSet(); da.Fill(ds); return (ds.Tables[0]); } /// /// 执行SQL查询语句 /// /// 查询语句 /// 返回SqlDataReader对象dr public SqlDataReader reDr(string str) { SqlConnection conn = GetCon();//连接数据库 conn.Open();//并打开了连接 SqlCommand com = new SqlCommand(str, conn); SqlDataReader dr = com.ExecuteReader(CommandBehavior.CloseConnection); return dr;//返回SqlDataReader对象dr } /// /// MD5加密 /// /// 被加密的字符串 /// 返回加密后的字符串 public string GetMD5(string strPwd) { string pwd = ""; //实例化一个md5对象 MD5 md5 = MD5.Create(); // 加密后是一个字节类型的数组,这里要注意编码UTF8/Unicode等的选择 byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(strPwd)); //翻转生成的MD5码 s.Reverse(); //通过使用循环,将字节类型的数组转换为字符串,此字符串是常规字符格式化所得 //只取MD5码的一部分,这样恶意访问者无法知道取的是哪几位 for (int i = 3; i < s.Length - 1; i++) { //将得到的字符串使用十六进制类型格式。格式后的字符是小写的字母,如果使用大写(X)则格式后的字符是大写字符 //进一步对生成的MD5码做一些改造 pwd = pwd + (s[i] < 198 ? s[i] + 28 : s[i]).ToString("X"); } return pwd; } } /*************************************登录前台文件*****************************************/
用户名:
密  码:
验证码: 请输入图片中验证码!
/**************************后台代码**********************************************/ protected void Page_Load(object sender, EventArgs e) { } //注册按钮 protected void btnRegister_Click(object sender, EventArgs e) { Response.Redirect("~/Register.aspx");//跳转到用户注册页面 } //登录按钮 protected void btnLogin_Click(object sender, EventArgs e) { //实例化公共类对象 DB db = new DB(); string userName = this.txtUserName.Text.Trim(); string passWord = db.GetMD5(this.txtPwd.Text.Trim());//对密码进行加密处理 string num = this.txtValidateNum.Text.Trim(); if (Session["ValidateNum"].ToString() == num.ToUpper()) { //获取用户信息 SqlDataReader dr = db.reDr("select * from tb_User where UserName='" + userName + "' and PassWord='" + passWord + "'"); dr.Read(); if (dr.HasRows)//通过dr中是否包含行判断用户是否通过身份验证 { Session["UserID"] = dr.GetValue(0);//将该用户的ID存入Session["UserID"]中 Session["Role"] = dr.GetValue(4);//将该用户的权限存入Session["Role"]中 Response.Redirect("~/UserManagement.aspx");//跳转到主页 } else { Response.Write(""); } dr.Close(); } else { Response.Write(""); } } /****************************注册网页(前台)Register.aspx *********************************************/
 
用户名: 检测用户名是否存在
密码:
确认密码:
Email:
以上内容为必填项,请正确填写,否则无法完成注册!
/****************************注册网页(后台)Register.aspx.cs*********************************************/ int reValue;//用于保存返回值。返回值为-1(用户名存在),0(失败),1(成功),2(用户名不存在) protected void Page_Load(object sender, EventArgs e) { } //注册新用户 protected void btnOk_Click(object sender, EventArgs e) { reValue = CheckName(); if (reValue == -1) { Response.Write(""); } else { DB db = new DB(); string UserName = this.txtUserName.Text; string PassWord = db.GetMD5 (this.txtPwd.Text.ToString ());//MD5加密 string Email = this.txtEmail.Text; string cmdstr = "insert into tb_User(UserName,PassWord,Email) values('" + UserName + "','" + PassWord + "','" + Email + "')"; try { reValue = db.sqlEx(cmdstr); if (reValue == 1) { Response.Write(""); Clear();//清空文本框 } else if (reValue == 0) { Response.Write(""); } } catch (Exception ee) { Response.Write(""); } } } //检测用户名是否存在 protected void lnkbtnCheck_Click(object sender, EventArgs e) { //查找用户名是否存在,已经存在返回-1,不存在返回2 reValue = CheckName(); if (reValue == -1) { Response.Write(""); this.txtUserName.Focus(); } else if (reValue == 2) { Response.Write(""); this.txtUserName.Focus(); } } //验证用户名是否存在 public int CheckName() { //实例化公共类对象 DB db = new DB(); string str = "select count(*) from tb_User where UserName='" + this.txtUserName.Text + "'"; try { DataTable dt =db.reDt(str); if (dt.Rows[0][0].ToString() != "0") { return -1;//该用户名已经存在 } else { return 2;//该用户名尚未注册 } } catch (Exception ee) { return 0; } } //清空文本框 public void Clear() { this.txtUserName.Text = ""; this.txtPwd.Text = ""; this.txtRepwd.Text = ""; this.txtEmail.Text = ""; } //返回登录页 protected void btnBack_Click(object sender, EventArgs e) { Response.Redirect("~/Login.aspx"); } /*************************************用户管理前台******************************/
退出
用户名:
旧密码:
新密码:
确认密码:
用户名 电子邮件 是否为管理员 操作 管理员设置
用户名:
Email:
/********************************用户管理后台*UserManagement.aspx.cs****************************/ public static string selVal;//设置查询条件 protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { if (Convert.ToBoolean (Session["Role"])) selVal = ""; else { selVal = "where UserID="+Session["UserID"].ToString(); } DataListBind(); } } //用于绑定DataList控件 public void DataListBind() { //实例化公共类的对象 DB db = new DB(); //定义SQL语句 string sqlstr = "select * from tb_User "+selVal ; //实例化数据集DataTable用于存储查询结果 DataTable dt =db.reDt(sqlstr); //绑定DataList控件 DataList1.DataSource = dt;//设置数据源,用于填充控件中的项的值列表 DataList1.DataBind();//将控件及其所有子控件绑定到指定的数据源 } //显示EditTemplate模板 protected void DataList1_EditCommand(object source, DataListCommandEventArgs e) { //设置DataList1控件的编辑项的索引为选择的当前索引 DataList1.EditItemIndex = e.Item.ItemIndex; //数据绑定 DataListBind(); } //取消显示EditTemplate模板 protected void DataList1_CancelCommand(object source, DataListCommandEventArgs e) { //设置DataList1控件的编辑项的索引为-1,即取消编辑 DataList1.EditItemIndex = -1; //数据绑定 DataListBind(); } //修改用户密码 protected void DataList1_UpdateCommand(object source, DataListCommandEventArgs e) { //实例化公共类的对象 DB db = new DB(); //取得文本框中输入的内容 string userName = ((Label)e.Item.FindControl("lblUserName")).Text; string oldpassWord = ((TextBox)e.Item.FindControl("txtOldpwd")).Text; string newpassWord = ((TextBox)e.Item.FindControl("txtNewpwd")).Text; if (db.GetMD5(oldpassWord) == e.CommandArgument.ToString()) { string sqlStr = "update tb_User set PassWord='" + db.GetMD5(newpassWord) + "'where UserName='" + userName + "'"; //更新数据库,变量reValue用于保存执行Sql语句的返回值,成功为1,失败为0 int reValue = db.sqlEx(sqlStr); if (reValue == 0) Response.Write(""); else Response.Write(""); //取消编辑状态 DataList1.EditItemIndex = -1; DataListBind(); } else { Response.Write(""); } } protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e) { //实例化公共类的对象 DB db = new DB(); //显示selectTemplate模板 if (e.CommandName == "select") { //设置选中行的索引为当前选择行的索引 DataList1.SelectedIndex = e.Item.ItemIndex; //数据绑定 DataListBind(); } //对selectTemplate模板中的用户名及Email信息进行更改 if (e.CommandName == "updateName") { string userName = ((TextBox)e.Item.FindControl("txtUserName")).Text; string email = ((TextBox)e.Item.FindControl("txtEmail")).Text; string userID = e.CommandArgument.ToString (); string sqlStr = "update tb_User set UserName='" + userName + "',Email='"+email+"' where UserID="+ userID; //更新数据库,变量reValue用于保存执行Sql语句的返回值,成功为1,失败为0 int reValue = db.sqlEx(sqlStr); if (reValue == 0) Response.Write(""); //取消选择状态 DataList1.SelectedIndex = -1; DataListBind(); } //取消显示selectTemplate模板 if (e.CommandName == "cancel") { //设置选中行的索引为-1,取消该数据项的选择 DataList1.SelectedIndex = -1; //数据绑定 DataListBind(); } //设置用户的管理员权限 if (e.CommandName == "setRole") { string userID = e.CommandArgument.ToString(); string roleText = ((Button)e.Item.FindControl("btnSetRole")).Text; bool role = (roleText == "取消管理员权限" ? false : true); string sqlStr = "update tb_User set Role='" + role + "'where UserID=" + userID; //更新数据库,变量reValue用于保存执行Sql语句的返回值,成功为1,失败为0 int reValue = db.sqlEx(sqlStr); if (reValue == 0) Response.Write(""); //重新绑定 DataListBind(); } } //删除该条记录 protected void DataList1_DeleteCommand(object source, DataListCommandEventArgs e) { //实例化公共类的对象 DB db = new DB(); string userID = e.CommandArgument.ToString(); string sqlStr = "delete from tb_User where UserID=" + userID; //更新数据库,变量reValue用于保存执行Sql语句的返回值,成功为1,失败为0 int reValue = db.sqlEx(sqlStr); if (reValue == 0) Response.Write(""); //重新绑定 DataListBind(); } //删除记录前显示提示信息 protected void btnDelete_Load(object sender, EventArgs e) { ((Button)sender).Attributes["onclick"] = "javascript:return confirm('你确认要删除该条记录吗?')"; } //退出 protected void lnkbtnExit_Click(object sender, EventArgs e) { //清空Session中的内容,并停止Session Session["ValidateNum"] = null; Session["Role"] = null; Session["UserID"] = null; Session.Clear(); Session.Abandon(); //跳转到登录页 Response.Redirect("~/Login.aspx"); } //根据用户权限判断该用户是否可以设置管理员 protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e) { if (!Convert.ToBoolean(Session["Role"])) { switch (e.Item.ItemType) { case ListItemType.Item: ((Button)e.Item.FindControl("btnSetRole")).Enabled = false; break; case ListItemType .AlternatingItem : ((Button)e.Item.FindControl("btnSetRole")).Enabled = false; break; } } } /***************************************ValidateNum.aspx 验证码(后台,前台无代码)*****************************************************/ using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Drawing;//引入命名空间 public partial class ValidateNum : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { string validateNum = CreateRandomNum(4);//成生4位随机字符串 CreateImage(validateNum);//将生成的随机字符串绘成图片 Session["ValidateNum"] = validateNum;//保存验证码 } } //生成随机字符串 private string CreateRandomNum(int NumCount) { string allChar = "0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,W,X,Y,Z"; string[] allCharArray = allChar.Split(',');//拆分成数组 string randomNum = ""; int temp = -1;//记录上次随机数的数值,尽量避免产生几个相同的随机数 Random rand = new Random(); for (int i = 0; i < NumCount; i++) { if (temp != -1) { rand = new Random(i * temp * ((int)DateTime.Now.Ticks)); } int t = rand.Next(35); if (temp == t) { return CreateRandomNum(NumCount); } temp = t; randomNum += allCharArray[t]; } return randomNum; } //生成图片 private void CreateImage(string validateNum) { if (validateNum == null || validateNum.Trim() == String.Empty) return; //生成Bitmap图像 System.Drawing.Bitmap image = new System.Drawing.Bitmap(validateNum.Length * 12 + 10, 22); Graphics g = Graphics.FromImage(image); try { //生成随机生成器 Random random = new Random(); //清空图片背景色 g.Clear(Color.White); //画图片的背景噪音线 for (int i = 0; i < 25; i++) { int x1 = random.Next(image.Width); int x2 = random.Next(image.Width); int y1 = random.Next(image.Height); int y2 = random.Next(image.Height); g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2); } Font font = new System.Drawing.Font("Arial", 12, (System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)); System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2f, true); g.DrawString(validateNum, font, brush, 2, 2); //画图片的前景噪音点 for (int i = 0; i < 100; i++) { int x = random.Next(image.Width); int y = random.Next(image.Height); image.SetPixel(x, y, Color.FromArgb(random.Next())); } //画图片的边框线 g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1); System.IO.MemoryStream ms = new System.IO.MemoryStream(); //将图像保存到指定的流 image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif); Response.ClearContent(); Response.ContentType = "image/Gif"; Response.BinaryWrite(ms.ToArray()); } finally { g.Dispose(); image.Dispose(); } } }